# 1).连接到数据库(host:localhost user:root password:root database:books)， 并开启自动提交事务
# 2).新增一条图书数据(id:4 title:西游记 pub_date:1986-01-01 )
#
# 3).故意抛出一个异常(模拟代码出现异常)
#
# 4).新增一条英雄人物数据(name:孙悟空 gender:1 book_id:4)

import pymysql

connection = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='books',charset='utf8')

# 获取游标
cursor = connection.cursor()

# 执行sql
sql = "insert into t_book(id,title,pub_date) values(4,'西游记', '1986-01-01');"
cursor.execute(sql)
print(cursor.rowcount)
print('*' * 200)

# 主动抛出异常
raise Exception("程序出错啦。。。。")

# 新增一条英雄人物数据(name:孙悟空 gender:1 book_id:4)
sql = "insert into t_hero(name,gender,book_id) values('孙悟空', 1, 4)"
cursor.execute(sql)
print(cursor.rowcount)

# 关闭游标
cursor.close()

# 关闭连接
connection.close()

# ACID
# 原子性:事务中的一系列操作，它是最基本的工作单元
# 一致性:在数据库看到的结果要么是执行之前，要么是执行之后的结果
# 隔离性:事务的内部状态对其他事务是不可见的
# 持久性:通过事务对数据库中数据做的改变，永久有效
